package org.iamd.hibernate.vo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Обект, които служи за генериране на уникални идентификатори за нови редове в таблиците на
 * приложението.
 * 
 * @author И. Атанасов
 */
@Entity
@Table(name = "gen_ids")
public class GenId extends HibernateVO {

	/** Сериен номер на класа. */
	private static final long serialVersionUID = 6527218261747004040L;

	/** Последно генериран идентификатор. */
	private Integer lastUsedId;

	/** Име на таблица, за която се генерира идентификатор. */
	private String tableName;

	/**
	 * Default конструктор.
	 */
	public GenId() {
		// default constructor
	}

	/**
	 * @return последно генериран идентификатор
	 */
	@Column(name = "last_used_id", nullable = false)
	public Integer getLastUsedId() {
		return this.lastUsedId;
	}

	/**
	 * @return име на таблица, за която се генерира идентификатор
	 */
	@Id
	@Column(name = "table_name", unique = true, nullable = false, length = 50)
	public String getTableName() {
		return this.tableName;
	}

	/**
	 * Setter за последно генериран идентификатор.
	 * 
	 * @param lastUsedId
	 *            последно генериран идентификатор
	 */
	public void setLastUsedId(Integer lastUsedId) {
		if (lastUsedId == null) {
			this.lastUsedId = 0;
		} else {
			this.lastUsedId = lastUsedId;
		}
	}

	/**
	 * Setter за име на таблица, за която се генерира идентификатор.
	 * 
	 * @param tableName
	 *            име на таблица, за която се генерира идентификатор
	 */
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}

}